package com.hup.winHolderService.model;

import com.hup.utils.commons.io.BaseConfig;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;

/**
 * 页面上供用户运行的外部程序(运行权限继承了本程序的);
 * .需要人工编辑配置文件
 * .只在程序启动时加载(安全性问题)
 *
 * @author hugan
 * @date 2020/9/8
 */
@Data
public class ExternalAppConfig implements BaseConfig<ExternalAppConfig> {

    public ArrayList<ExternalApp> apps = new ArrayList<>();

    @Override
    public boolean afterLoadFromFileOrReset(ExternalAppConfig fileConfig) {
        if (fileConfig == null || fileConfig.apps == null || fileConfig.apps.isEmpty()) {
            //没有配置文件时,保存一次文件
            apps.add(new ExternalApp("程序描述,程序名", "程序路径,exe", "运行参数,nullable"));
            return true;
        }
        return false;
    }

    @Data
    @NoArgsConstructor
    public static class ExternalApp {
        /**
         * 程序描述/程序名,用于页面展示
         */
        public String desc;

        /**
         * 程序路径,用于启动程序
         */
        public String path;

        /**
         * 运行参数,nullable
         */
        public String param;

        private ExternalApp(String desc, String path, String param) {
            this.desc = desc;
            this.path = path;
            this.param = param;
        }
    }

}
